package com.sptokentest.service.ServiceImpl;

import cn.dev33.satoken.util.SaResult;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.sptokentest.pj.dto.MenuDto;
import com.sptokentest.entity.Menu;
import com.sptokentest.entity.RoleMenu;
import com.sptokentest.mapper.RoleMenuMapper;
import com.sptokentest.service.MenuService;
import com.sptokentest.service.RoleMenuService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author young
 * @since 2023年01月14日
 */
@Service
public class RoleMenuServiceImpl extends ServiceImpl<RoleMenuMapper, RoleMenu> implements RoleMenuService {

    @Autowired
    private MenuService menuService;

    @Override
    public SaResult getMenuRoleList() {
        MenuDto menuDto1 = new MenuDto();

        LambdaQueryWrapper<Menu> lqw = new LambdaQueryWrapper<>();
        lqw.eq(Menu::getMid,null);
        List<Menu> listOne = menuService.list(lqw);
        for (Menu menu :
                listOne) {
            menuDto1.setMenuId(menu.getMenuId());
            menuDto1.setMenuName(menu.getMenuName());
            LambdaQueryWrapper<Menu> lqw1 = new LambdaQueryWrapper<>();
            lqw1.eq(Menu::getMid,menuDto1.getMenuId());
            List<Menu> listTwo = menuService.list(lqw1);
            List<MenuDto> menuDtos = new ArrayList<>();
            if(listTwo.size()!=0){
                for (Menu menu2 :
                        listTwo) {
                    MenuDto menuDto2 = new MenuDto();
                    menuDto2.setMenuId(menu2.getMenuId());
                    menuDto2.setMenuName(menu2.getMenuName());
                    menuDtos.add(menuDto2);
                }
                menuDto1.setChildren(menuDtos);
            }
        }
        return SaResult.data(menuDto1);
    }
}
